package cn.tedu;


import java.sql.*;
import java.util.Scanner;

public class Demo07 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = scanner.nextLine();
        System.out.println("请输入密码");
        String password = scanner.nextLine();
        //获取连接对象
        try (Connection conn = DBUtils.getConn()) {
            //用?占位-----?占位符--表示变量
            String sql = "select count(*) from user where username=? and password=?";
            //创建预编译sql的执行对象,在执行代码时将sql语句中程序员所写的业务逻辑部分的sql语句编译并锁死现有的逻辑
            PreparedStatement ps = conn.prepareStatement(sql);
            //替换sql语句中的内容, 1和2 代表的时?的位置此时将用户输入的内容以值的形式替换到sql语句中,不会更改原有的sql语句的判断逻辑从而避免的失sql注入的问题
            ps.setString(1, username);
            ps.setString(2, password);
            //执行sql语句
            ResultSet rs = ps.executeQuery();
            //让游标指向第一条数据
            rs.next();
            //从结果集中抽取查询大的数据
            int count = rs.getInt(1);
            if (count > 0) {
                System.out.println("登录成功");
            } else {
                System.out.println("用户名或密码错误!");
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}


